package 力扣_树算法.二叉树;

/**543. 二叉树的直径
 * @author zx
 * @create 2022-04-11 15:00
 */
public class Num543 {
    //存储当前二叉树的最长路径
    int res = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        height(root);
        return res;
    }
    //递归求每个节点的最大半径长度
    private int height(TreeNode root){
        if(root == null){
            return 0;
        }
        //计算左子树半径长度
        int leftHeight = height(root.left);
        //计算右子树半径长度
        int rightHeight = height(root.right);
        //要在方法return之前更新当前树的直径长度
        res = Math.max(res,(leftHeight + rightHeight));
        return 1 + Math.max(leftHeight,rightHeight);
    }
}
